<?php

    class Cases extends CI_Controller{
        
        function index(){
            $this->listarCases();
        }
        
        function estaLogado(){
            $id = $this->session->userdata('pessoa_id');
            if(empty($id)){
                redirect('pessoa/login');
            }else{
                $this->temAvaliacoes($id);
            }
        }
        
        function temAvaliacoes($id){
            $this->load->model('pessoaModel');
            $aval = $this->pessoaModel->temAvaliacoes($id);
            $this->session->set_userdata('avaliacoes', $aval);
            return true;
        }
        
        function listarCases(){
            $this->estaLogado();
            $this->load->model('casesModel');
            
            $dados['cases'] = $this->casesModel->getCases();
            foreach ($dados['cases'] as $case)
                $case->estado = $this->casesModel->getEstadoCase($case->estado_id)->estado_case;
            $dados['submenu'] = $submenu = array( 
                0 => array('nome' => 'Listagem', 'link' => 'cases/listarCases'),
                1 => array('nome' => 'Estados', 'link' => 'cases/listarEstadosCase'),
            );
            
            $this->load->view('cases/listarCases', $dados);
        }
        
        function cadastrarCase(){
            $this->load->model('casesModel');
            $this->load->model('pessoaModel');
            $dados['dropEstados'] = $this->casesModel->dropEstadosCase();
            $dados['membros'] = $this->pessoaModel->dropMembros();
            $this->load->view('cases/cadastrarCase', $dados);
        }
        
        function cadastrandoCase(){
            $this->load->model('casesModel');
            
            $dados['case'] = $this->input->post('nome');
            $dados['data'] = $this->input->post('data');
            $dados['descricao'] = $this->input->post('descricao');
            $dados['estado_id'] = $this->input->post('estado');
            $membros = $this->input->post('membros');
            
            $add['case_id'] = $this->casesModel->cadastrarCase($dados);
            foreach ($membros as $membro){
                $add['membro_id'] = $this->casesModel->converteNomeParaId($membro);
                $this->casesModel->adicionarMembroCase($add);
            }
            
            redirect('cases/listarCases');
        }
        
        function editarCase(){
            $this->load->model('casesModel');
            $id = $this->uri->segment(3);
            
            $dados['case'] = $this->casesModel->getCase($id);
            $dados['dropEstados'] = $this->casesModel->dropEstadosCase();
            
            $this->load->view('cases/editarCase', $dados);
        }
        
        function editandoCase(){
            $this->load->model('casesModel');
            
            $dados['id'] = $this->input->post('id');
            $dados['case'] = $this->input->post('nome');
            $dados['descricao'] = $this->input->post('descricao');
            $dados['data'] = $this->input->post('data');
            $dados['estado_id'] = $this->input->post('estado');
            
            $this->casesModel->editarCase($dados);
            
            redirect('cases/listarCases');
        }
        
        function excluirCase(){
            $this->load->model('casesModel');
            $id = $this->uri->segment(3);
            
            $this->casesModel->excluirCase($id);
            return true;
        }
        
        function listarMembrosCase(){
            $this->load->model('casesModel');
            $id = $this->uri->segment(3);
            
            $dados['case'] = $this->casesModel->getCase($id);
            $dados['membros'] = $this->casesModel->getMembrosCase($id);
            
            $this->load->view('cases/membrosCase',$dados);
        }
        
        function adicionarMembroCase(){
            $this->load->model('casesModel');
            
            $dados['id'] = $this->uri->segment('3');
            $dados['dropMembros'] = $this->casesModel->dropMembrosForaCase($dados['id']);
            $this->load->view('cases/adicionarMembroCase', $dados);
        }
        
        function adicionandoMembroCase(){
            $this->load->model('casesModel');
            
            $dados['membro_id'] = $this->input->post('membro');
            $dados['case_id'] = $this->input->post('case');
            
            $this->casesModel->adicionarMembroCase($dados);
            
            redirect('cases/listarMembrosCase/'.$dados['case_id']);
        }
        
        function excluirMembroCase(){
            $this->load->model('casesModel');
            $membro_id = $this->uri->segment(3);
            $case_id = $this->uri->segment(4);
            
            $this->casesModel->excluirMembroCase($membro_id, $case_id);
            return true;
        }
        
        function listarEstadosCase(){
            $this->estaLogado();
            $this->load->model('casesModel');
            
            $dados['estados'] = $this->casesModel->getEstadosCase();
            $dados['submenu'] = $submenu = array( 
                0 => array('nome' => 'Listagem', 'link' => 'cases/listarCases'),
                1 => array('nome' => 'Estados', 'link' => 'cases/listarEstadosCase'),
            );
            $this->load->view('cases/listarEstadosCase', $dados);
        }
        
        function cadastrarEstadoCase(){
            $this->load->view('cases/cadastrarEstadoCase');
        }

        function cadastrandoEstadoCase(){
            $this->estaLogado();
            $this->load->model('casesModel');

            $dados['estado_case'] = $this->input->post('estado');
            $dados['pontuacao'] = $this->input->post('pontuacao');
            $this->casesModel->cadastrarEstadoCase($dados);

            redirect('cases/listarEstadosCase');
        }

        function editarEstadoCase(){
            $this->estaLogado();
            $this->load->model('casesModel');
            $id = $this->uri->segment(3);

            $dados['estado'] = $this->casesModel->getEstadoCase($id);
            $this->load->view('cases/editarEstadoCase', $dados);
        }

        function editandoEstadoCase(){
            $this->estaLogado();
            $this->load->model('casesModel');

            $dados['id'] = $this->input->post('id');
            $dados['estado_case'] = $this->input->post('estado');
            $dados['pontuacao'] = $this->input->post('pontuacao');
            $this->casesModel->editarEstadoCase($dados);

            redirect('cases/listarEstadosCase');
        }

        function excluirEstadoCase(){
            $this->estaLogado();
            $this->load->model('casesModel');
            $id = $this->uri->segment(3);

            $this->casesModel->excluirEstadoCase($id);
            return true;
        }
        
    }
?>
